home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DDJMAG / DDJ9203.ZIP / OOPASM.ZIP / SOUND.ASM < prev    next >
Assembly Source File  |  1990-04-04  |  2KB  |  119 lines

  1.     .MODEL    SMALL
  2.  
  3.     INCLUDE    equates.inc
  4.     INCLUDE    instance.inc
  5.     INCLUDE    messages.inc
  6.     INCLUDE    objects.inc
  7.  
  8.     PortB        EQU    61h        ;Sound port address
  9.  
  10. IF1
  11.     INCLUDE    macros.mac
  12.     INCLUDE    objects.mac
  13.     INCLUDE    video.mac
  14. ENDIF
  15.  
  16.     EXTRN    Self:WORD
  17.  
  18.     .CODE
  19.  
  20. COMMENT    %
  21. ==============================================================================
  22. Makes an "Alert" sound.
  23. =============================================================================%
  24. alertSound    PROC    NEAR
  25.     mov        si,880
  26.     mov        di,440
  27.     call        makeSound
  28.     ret
  29. alertSound    ENDP
  30.  
  31.  
  32.  
  33. COMMENT    %
  34. ==============================================================================
  35. Makes an "Error" sound.
  36. =============================================================================%
  37. errorSound    PROC    NEAR
  38.     mov        si,7040
  39.     mov        di,3520
  40.     call        makeSound
  41.     ret
  42. errorSound    ENDP
  43.  
  44.  
  45.  
  46. COMMENT    %
  47. ==============================================================================
  48. Makes the specified sound.
  49.  
  50. Passed:    si - Sound frequency one
  51.     di - Sound frequency two
  52. =============================================================================%
  53. makeSound    PROC    NEAR
  54.     in        al,PortB            ;Read port B
  55.     push        ax                ;Save contents
  56.  
  57.     mov        dx,0Bh
  58. mks1:    mov        bx,si                ;Pass frequency
  59.     call        speakerOn
  60.  
  61.     mov        cx,2600h
  62. mks2:    loop        mks2
  63.  
  64.     mov        bx,di                ;Pass frequency
  65.     call        speakerOn
  66.  
  67.     mov        cx,1300h
  68. mks3:    loop        mks3
  69.  
  70.     dec        dx
  71.     jnz        mks1
  72.  
  73.     pop        ax                ;Restore contents
  74.     out        PortB,al            ;Turn off speaker
  75.     ret
  76. makeSound    ENDP
  77.  
  78.  
  79.  
  80. COMMENT    %
  81. ==============================================================================
  82. Turns on the speaker.
  83.  
  84. Passed:    bx - Sound frequency
  85. =============================================================================%
  86. speakerOn    PROC    NEAR
  87.     mov        al,10110110b            ;Write LSB/MSB
  88.     out        43h,al                ;Mode 3
  89.     mov        ax,bx                ;Send counter LSB
  90.     out        42h,al                ;MSB into timer2
  91.     mov        al,ah                ;Send counter MSB
  92.     out        42h,al                ;MSB into timer2
  93.     in        al,PortB            ;Read port B
  94.     or        al,00000011b            ;Enable speaker
  95.     out        PortB,al            ;Turn on speaker
  96.     ret
  97. speakerOn    ENDP
  98.  
  99.  
  100.  
  101.     .DATA
  102.  
  103. defMsg    Sound,\
  104.     Alert,\
  105.     <alertSound,,>
  106.  
  107. defMsg    Sound,\
  108.     Error,\
  109.     <errorSound,,>
  110.  
  111. defObj    Sound,\
  112.     <>,\
  113.     <>\
  114.     <Alert,Error>
  115.  
  116.  
  117.  
  118.     END
  119.